package com.cy.thread.queue;

import java.util.concurrent.CountDownLatch;

/**
 * @Author : 残影
 * @Date: 2021-03-25 10:46
 * 假设一个自习室里有7个人，其中有一个是班长，班长的主要职责就是在其它6个同学走了后，
 * 关灯，锁教室门，然后走人，因此班长是需要最后一个走的，那么有什么方法能够控制班长这个线程是最后一个执行，
 * 而其它线程是随机执行的
 */
public class CountDownLatchDemo {
    public static void main(String[] args) throws InterruptedException {
        // 计数器
        CountDownLatch countDownLatch = new CountDownLatch(6);
        for (int i = 0; i <= 6; i++) {
            new Thread(() -> {
                System.out.println(Thread.currentThread().getName() + "\t 上完自习，离开教室");
                countDownLatch.countDown();
            }, String.valueOf(i)).start();
        }
        countDownLatch.await();
        System.out.println(Thread.currentThread().getName() + "\t 班长最后关门");
    }
}
